package algorithms;

/**
 * @author 07509-Chang Shengwei
 * @version Id: RemoveDuplicatesFromSortedArray.java, v 0.1 2021/9/13 15:06  Shengwei Exp $
 * @Description
 *
 * 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。
 *
 * 不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class RemoveDuplicatesFromSortedArray {


    /**
     * 把j看成一个新数组就可以新数组第一个一定不会重复不用考虑，从第二个开始，i进行遍历，要是i等于j这个数组前一个元素，就不把它放进来，
     * 不相等时就把i这个元素放到j这个数组的下一个元素里面。
     * j代表的是新数组的下标，返回他的数组长度就是j+1.
     * @param nums
     * @return
     */
    public static int removeDuplicates(int[] nums) {
        if(nums.length < 2) {
            return nums.length;
        }
        int j = 0;
        for(int i = 1; i < nums.length; i++){
            if(nums[j] != nums[i]){
                nums[++j] = nums[i];
            }
        }
        return ++j;
    }

    public static void main(String[] args) {
        int[] ints = {1,2,2,3,4};
        System.out.println(removeDuplicates(ints));
    }

}
    